Spring Boot প্রজেক্ট সেটআপ

Java Technologies - স্প্রিং বুট ওআরএম (Spring Boot ORM)
152

স্প্রিং বুট ORM ব্যবহার শুরু করার আগে স্প্রিং বুট প্রজেক্ট সেটআপ করতে হবে। স্প্রিং বুট প্রজেক্ট কনফিগারেশন সহজ ও দ্রুত করার জন্য বিভিন্ন টুল এবং প্ল্যাটফর্ম ব্যবহার করা যায়, যেমন Spring Initializr।


Spring Boot প্রজেক্ট তৈরি করার ধাপসমূহ

১. Spring Initializr ব্যবহার করে প্রজেক্ট তৈরি

Spring Initializr হলো একটি ওয়েব-ভিত্তিক টুল যা দ্রুত এবং সহজে স্প্রিং বুট প্রজেক্ট তৈরি করতে সহায়তা করে।

প্রজেক্ট তৈরি করার ধাপ:
  1. Spring Initializr ওয়েবসাইটে যান: https://start.spring.io
  2. নিচের অপশনগুলো নির্বাচন করুন:
    • Project: Maven অথবা Gradle (সাধারণত Maven ব্যবহার করা হয়)
    • Language: Java
    • Spring Boot Version: সর্বশেষ স্থিতিশীল সংস্করণ
    • Dependencies: Spring Web, Spring Data JPA, এবং একটি ডেটাবেস ড্রাইভার যেমন H2 Database বা MySQL Driver
  3. Generate বাটনে ক্লিক করুন এবং ডাউনলোড করা ZIP ফাইলটি আনজিপ করুন।
  4. প্রজেক্টটি আপনার প্রিয় IDE (যেমন IntelliJ IDEA, Eclipse বা Spring Tool Suite) এ খুলুন।

২. ম্যানুয়ালভাবে Spring Boot প্রজেক্ট সেটআপ

Spring Initializr ব্যবহার না করে ম্যানুয়াল পদ্ধতিতেও প্রজেক্ট তৈরি করা যায়।

ধাপসমূহ:
  1. Maven প্রজেক্ট তৈরি করুন
    IDE ব্যবহার করে একটি নতুন Maven প্রজেক্ট তৈরি করুন।
  2. pom.xml কনফিগারেশন আপডেট করুন
    প্রয়োজনীয় Spring Boot ডিপেনডেন্সি যোগ করুন:
<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- Spring Boot Starter JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <!-- H2 Database -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>
  1. Spring Boot Main Class তৈরি করুন
    একটি Main ক্লাস তৈরি করুন যা @SpringBootApplication অ্যানোটেশন দিয়ে চিহ্নিত থাকবে।
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootOrmApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootOrmApplication.class, args);
    }
}
  1. Application Properties কনফিগার করুন
    ডেটাবেস সংযোগ তৈরি করতে src/main/resources/application.properties ফাইল কনফিগার করুন:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update

Spring Boot প্রজেক্ট চালানো

প্রজেক্ট সফলভাবে তৈরি করার পর SpringBootOrmApplication ফাইল রান করুন। Spring Boot প্রজেক্ট স্বয়ংক্রিয়ভাবে একটি এমবেডেড সার্ভারে (Tomcat) রান হবে এবং লগে আউটপুট দেখাবে।


সারাংশ

Spring Boot ORM ব্যবহার করার আগে একটি Spring Boot প্রজেক্ট তৈরি করা প্রয়োজন। Spring Initializr টুল বা ম্যানুয়াল পদ্ধতি ব্যবহার করে দ্রুত প্রজেক্ট সেটআপ করা যায়। সঠিক ডিপেনডেন্সি এবং কনফিগারেশন যোগ করার মাধ্যমে ORM টুল যেমন Hibernate সহজে ব্যবহার করা সম্ভব।

Content added By

Maven/Gradle দিয়ে Spring Boot প্রজেক্ট তৈরি করা

155

স্প্রিং বুট প্রজেক্ট Maven বা Gradle টুল ব্যবহার করে খুব সহজেই তৈরি করা যায়। নিচে ধাপে ধাপে স্প্রিং বুট ORM প্রজেক্ট তৈরি করার পদ্ধতি আলোচনা করা হলো।


Maven দিয়ে Spring Boot প্রজেক্ট তৈরি

Maven হলো একটি জনপ্রিয় বিল্ড টুল যা ডিপেন্ডেন্সি ম্যানেজমেন্ট এবং প্রজেক্ট বিল্ডিংয়ের জন্য ব্যবহৃত হয়।

ধাপ ১: Spring Initializr ব্যবহার করা

Spring Initializr হলো একটি ওয়েব-ভিত্তিক টুল যা দ্রুত স্প্রিং বুট প্রজেক্ট জেনারেট করতে সাহায্য করে।

  1. ব্রাউজারে Spring Initializr খুলুন।
  2. প্রজেক্ট টাইপ হিসেবে Maven নির্বাচন করুন।
  3. নিচের অপশনগুলো সঠিকভাবে সেট করুন:
    • Group: com.example
    • Artifact: spring-boot-orm
    • Dependencies: Spring Web, Spring Data JPA, এবং H2 Database
  4. Generate Project বাটনে ক্লিক করুন এবং জিপ ফাইল ডাউনলোড করুন।
  5. ডাউনলোড করা প্রজেক্টটি আনজিপ করুন এবং আপনার পছন্দের আইডিই (IDE) যেমন IntelliJ IDEA বা Eclipse-এ ইমপোর্ট করুন।

ধাপ ২: pom.xml ফাইল কনফিগার করা

ডিপেন্ডেন্সি ম্যানেজমেন্টের জন্য pom.xml ফাইল স্বয়ংক্রিয়ভাবে তৈরি হয়। এটি দেখতে এমন হবে:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

Gradle দিয়ে Spring Boot প্রজেক্ট তৈরি

Gradle হলো একটি আধুনিক বিল্ড টুল যা জাভা ও স্প্রিং বুট প্রজেক্টগুলোর জন্য শক্তিশালী সমাধান।

ধাপ ১: Spring Initializr ব্যবহার করা

Gradle দিয়ে প্রজেক্ট তৈরির জন্য Spring Initializr টুলের ধাপগুলো প্রায় একই। শুধু প্রজেক্ট টাইপ হিসেবে Gradle নির্বাচন করুন এবং Generate Project বাটনে ক্লিক করুন।

ধাপ ২: build.gradle ফাইল কনফিগার করা

Gradle ব্যবহার করলে ডিপেন্ডেন্সি ম্যানেজমেন্টের জন্য build.gradle ফাইল স্বয়ংক্রিয়ভাবে তৈরি হয়। এটি এমন দেখাবে:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    runtimeOnly 'com.h2database:h2'
}

Gradle Wrapper দিয়ে প্রজেক্ট রান করা

প্রজেক্ট রান করতে নিচের কমান্ড ব্যবহার করুন:

./gradlew bootRun

স্প্রিং বুট প্রজেক্ট রান করা

Maven বা Gradle ব্যবহার করে প্রজেক্ট তৈরি করার পর রান করতে হলে নিচের স্টেপগুলো অনুসরণ করুন:

  1. আপনার আইডিই-তে প্রজেক্ট ওপেন করুন।
  2. SpringBootOrmApplication বা মেইন ক্লাসটি রান করুন।
  3. কনসোলে লগ দেখুন। যদি সবকিছু সঠিক হয়, তবে Spring Boot অ্যাপ্লিকেশন সফলভাবে রান করবে।

সারাংশ

Spring Boot ORM প্রজেক্ট Maven বা Gradle দিয়ে তৈরি করা খুবই সহজ। Spring Initializr টুল ব্যবহার করে আপনি দ্রুত প্রজেক্ট তৈরি করতে পারেন। Maven বা Gradle-এর ডিপেন্ডেন্সি কনফিগারেশন সঠিকভাবে করলে প্রজেক্ট রান করতে কোনো সমস্যা হয় না। এটি ডেভেলপমেন্টের সময় সাশ্রয় করে এবং ডেভেলপারদের কাজকে আরও সহজ করে তোলে।

Content added By

Spring Boot এর মধ্যে প্রয়োজনীয় ডিপেনডেন্সি (Spring Data JPA, Hibernate) যুক্ত করা

152

স্প্রিং বুটের মাধ্যমে ORM (Object Relational Mapping) ব্যবহার করতে হলে, আপনার প্রকল্পে Spring Data JPA এবং Hibernate ডিপেনডেন্সি যুক্ত করতে হবে। এটি Maven বা Gradle ডিপেনডেন্সি ম্যানেজমেন্ট টুলের মাধ্যমে করা যায়।


Maven ব্যবহার করে ডিপেনডেন্সি সংযোজন

pom.xml ফাইলে নিচের ডিপেনডেন্সিগুলো যোগ করুন:

<dependencies>
    <!-- Spring Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- Database Driver (H2 for Example) -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- Optional: Lombok for Simplifying Code -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

Gradle ব্যবহার করে ডিপেনডেন্সি সংযোজন

build.gradle ফাইলে নিচের ডিপেনডেন্সিগুলো যোগ করুন:

dependencies {
    // Spring Data JPA
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

    // Database Driver (H2 for Example)
    runtimeOnly 'com.h2database:h2'

    // Optional: Lombok for Simplifying Code
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
}

কনফিগারেশন ফাইল (application.properties)

Spring Data JPA এবং Hibernate কাজ করার জন্য ডাটাবেস সংক্রান্ত কনফিগারেশন ফাইল সেটআপ করতে হবে। উদাহরণ:

# Database Configuration
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

# JPA/Hibernate Configuration
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

প্রয়োজনীয় ডিপেনডেন্সি ব্যাখ্যা

Spring Data JPA

  • এটি JPA ফ্রেমওয়ার্কের জন্য Spring Boot এর সরবরাহ করা একটি স্টার্টার প্যাকেজ।
  • Hibernate এর মতো JPA ইমপ্লিমেন্টেশনগুলোর সঙ্গে কাজ করার জন্য প্রয়োজনীয় টুলস সরবরাহ করে।

Hibernate

  • Hibernate হলো একটি ORM টুল, যা JPA ইমপ্লিমেন্টেশন হিসাবে কাজ করে। এটি ডাটাবেস টেবিল এবং জাভা অবজেক্টের মধ্যে স্বয়ংক্রিয় ম্যাপিং করে।

H2 Database

  • একটি এমবেডেড ইন-মেমোরি ডাটাবেস যা ডেভেলপমেন্ট ও টেস্টিংয়ের জন্য সহজে ব্যবহার করা যায়।

Lombok (ঐচ্ছিক)

  • Getter, Setter, এবং অন্যান্য বয়লারপ্লেট কোড সহজ করার জন্য ব্যবহৃত হয়।

সারাংশ

Spring Boot এ ORM ব্যবহারের জন্য Spring Data JPA এবং Hibernate ডিপেনডেন্সি যোগ করা অপরিহার্য। Maven বা Gradle এর মাধ্যমে এগুলো সহজেই যুক্ত করা যায়। এছাড়া ডাটাবেস কনফিগারেশন সঠিকভাবে সেটআপ করা জরুরি।

Content added By

প্রথম Spring Boot ORM প্রোগ্রাম (Hello World Example)

149

Spring Boot ORM প্রোগ্রামের মাধ্যমে সহজে একটি "Hello World" লেভেলের ডেটাবেস CRUD অপারেশন তৈরি করা যায়। এখানে একটি উদাহরণ দেওয়া হলো যা Spring Boot এবং JPA ব্যবহার করে ডেটাবেস থেকে ডেটা যোগ, পড়া, আপডেট এবং মুছে ফেলার প্রাথমিক ধারণা দেয়।


প্রয়োজনীয় ধাপসমূহ

১. প্রকল্প তৈরি

Spring Initializr ব্যবহার করে একটি Spring Boot প্রকল্প তৈরি করুন। নিচের ডিপেনডেন্সিগুলো যুক্ত করুন:

  • Spring Web
  • Spring Data JPA
  • H2 Database

২. Maven ডিপেনডেন্সি

pom.xml ফাইলে ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

৩. ডেটাবেস কনফিগারেশন

application.properties ফাইলে H2 ডেটাবেসের জন্য কনফিগারেশন যোগ করুন:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update

৪. Entity ক্লাস তৈরি

Employee নামে একটি Entity ক্লাস তৈরি করুন যা ডেটাবেসের টেবিল হিসেবে কাজ করবে।

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String department;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }
}

৫. Repository ইন্টারফেস তৈরি

Spring Data JPA এর সাহায্যে একটি Repository ইন্টারফেস তৈরি করুন:

import org.springframework.data.jpa.repository.JpaRepository;

public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}

৬. কন্ট্রোলার তৈরি

REST API তৈরির জন্য একটি কন্ট্রোলার তৈরি করুন।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/employees")
public class EmployeeController {

    @Autowired
    private EmployeeRepository employeeRepository;

    @GetMapping
    public List<Employee> getAllEmployees() {
        return employeeRepository.findAll();
    }

    @PostMapping
    public Employee createEmployee(@RequestBody Employee employee) {
        return employeeRepository.save(employee);
    }

    @PutMapping("/{id}")
    public Employee updateEmployee(@PathVariable Long id, @RequestBody Employee employeeDetails) {
        Employee employee = employeeRepository.findById(id).orElseThrow();
        employee.setName(employeeDetails.getName());
        employee.setDepartment(employeeDetails.getDepartment());
        return employeeRepository.save(employee);
    }

    @DeleteMapping("/{id}")
    public void deleteEmployee(@PathVariable Long id) {
        employeeRepository.deleteById(id);
    }
}

৭. অ্যাপ্লিকেশন চালানো

Spring Boot অ্যাপ্লিকেশন চালানোর জন্য @SpringBootApplication অ্যানোটেশনসহ main ক্লাস লিখুন:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootOrmApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootOrmApplication.class, args);
    }
}

প্রোগ্রাম আউটপুট

  1. অ্যাপ্লিকেশন চালু করার পরে H2 ডেটাবেসের কনসোল ব্যবহার করতে পারেন। এটি ব্রাউজারে http://localhost:8080/h2-console URL-এ পাওয়া যাবে।
  2. GET, POST, PUT, এবং DELETE রিকোয়েস্ট ব্যবহার করে REST API পরীক্ষা করতে পারেন। উদাহরণস্বরূপ:
    • POST রিকোয়েস্ট দিয়ে নতুন Employee যোগ করুন:

      {
          "name": "John Doe",
          "department": "Engineering"
      }
      
    • GET রিকোয়েস্ট দিয়ে সমস্ত Employee দেখুন।
    • PUT রিকোয়েস্ট দিয়ে Employee আপডেট করুন।
    • DELETE রিকোয়েস্ট দিয়ে Employee মুছে ফেলুন।

Spring Boot ORM এর এই উদাহরণটি আপনাকে একটি প্রাথমিক ধারণা দেবে কিভাবে Spring Boot এবং JPA ব্যবহার করে সহজেই ডেটাবেস অপারেশন করা যায়।

Content added By

Spring Boot এবং JPA এর সম্পর্ক

164

স্প্রিং বুট এবং JPA (Java Persistence API) একটি গভীর সম্পর্কযুক্ত। স্প্রিং বুট, জাভা অ্যাপ্লিকেশন ডেভেলপমেন্টকে সহজ করার জন্য একটি ফ্রেমওয়ার্ক, যেখানে JPA ডেটাবেস এবং জাভা অবজেক্টের মধ্যে ডেটা পরিচালনার জন্য স্ট্যান্ডার্ড প্রদান করে। স্প্রিং বুটের মাধ্যমে JPA ব্যবহার করা আরও সহজ এবং কার্যকর হয়, কারণ এটি অনেক কনফিগারেশন স্বয়ংক্রিয়ভাবে পরিচালনা করে।


JPA কীভাবে স্প্রিং বুটে ব্যবহৃত হয়

১. Spring Data JPA

স্প্রিং বুটে JPA ব্যবহারের জন্য Spring Data JPA একটি স্ট্যান্ডার্ড টুল। এটি JPA স্পেসিফিকেশনকে আরও উন্নত করে এবং ডাটাবেস অপারেশন পরিচালনার জন্য সহজতর উপায় প্রদান করে। Spring Data JPA সরাসরি Hibernate বা অন্যান্য JPA ইমপ্লিমেন্টেশন ব্যবহার করতে পারে।

২. Hibernate-এর ইন্টিগ্রেশন

Hibernate, JPA-এর সবচেয়ে জনপ্রিয় ইমপ্লিমেন্টেশন, স্প্রিং বুটে ডিফল্টভাবে ব্যবহৃত হয়। Hibernate-এর মাধ্যমে JPA স্পেসিফিকেশন কার্যকর হয় এবং ডেটাবেস টেবিল এবং জাভা ক্লাসের মধ্যে সম্পর্ক তৈরি করে।

৩. Spring Boot Starter Data JPA

স্প্রিং বুটে JPA ব্যবহারের জন্য spring-boot-starter-data-jpa ডিপেনডেন্সি প্রয়োজন। এটি Hibernate এবং Spring Data JPA-এর ইন্টিগ্রেশন সহজ করে।

Maven Dependency উদাহরণ:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

স্প্রিং বুট এবং JPA-এর পারস্পরিক কাজের ধারা

১. Entity ক্লাস

JPA-এর মাধ্যমে ডাটাবেস টেবিলের ম্যাপিং করার জন্য Entity ক্লাস তৈরি করা হয়।

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private double price;

    // Getters and Setters
}

২. Repository ইন্টারফেস

Spring Data JPA-এর মাধ্যমে সাধারণ ডাটাবেস অপারেশনের জন্য একটি Repository ইন্টারফেস তৈরি করা হয়।

public interface ProductRepository extends JpaRepository<Product, Long> {
    List<Product> findByName(String name);
}

৩. ডাটাবেস কনফিগারেশন

স্প্রিং বুটে JPA ডাটাবেস কনফিগারেশন application.properties বা application.yml ফাইলের মাধ্যমে করা হয়।

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update

৪. সার্ভিস এবং কন্ট্রোলার লেয়ারে ব্যবহৃত JPA

JPA-র সাহায্যে ডাটাবেস থেকে ডেটা নিয়ে আসা এবং HTTP রিকোয়েস্ট হ্যান্ডেল করার জন্য সার্ভিস এবং কন্ট্রোলার লেয়ার তৈরি করা হয়।

@Service
public class ProductService {
    @Autowired
    private ProductRepository productRepository;

    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }
}
@RestController
@RequestMapping("/products")
public class ProductController {
    @Autowired
    private ProductService productService;

    @GetMapping
    public List<Product> getProducts() {
        return productService.getAllProducts();
    }
}

স্প্রিং বুট এবং JPA-এর সম্পর্কের সুবিধা

  • অটোমেশন: স্প্রিং বুট স্বয়ংক্রিয়ভাবে Hibernate এবং JPA-এর জন্য প্রাথমিক কনফিগারেশন করে।
  • সহজ CRUD অপারেশন: Spring Data JPA সাধারণ ডাটাবেস অপারেশনগুলোর জন্য প্রি-বিল্ট মেথড প্রদান করে।
  • কাস্টম কেরি: জটিল ডাটাবেস অপারেশনের জন্য কাস্টম কেরি সাপোর্ট।
  • ডেটাবেস স্বাধীনতা: JPA-এর মাধ্যমে কোড ডাটাবেস নিরপেক্ষ হয়ে থাকে, যা সহজে বিভিন্ন ডাটাবেসে ব্যবহারযোগ্য।
  • পারফরম্যান্স বৃদ্ধি: Hibernate-এর Lazy Loading এবং Caching-এর সাহায্যে অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করা যায়।

স্প্রিং বুট এবং JPA একত্রে ডেটাবেস-চালিত অ্যাপ্লিকেশন ডেভেলপমেন্টকে দ্রুত, কার্যকর এবং সহজ করে তোলে।


Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...